Em Ruby, Entrada/Saída não é apenas um conjunto de comandos; é uma arquitetura sofisticada baseada em fluxos. No cerne deste sistema está a IO classe, que atua como um canal bidirecional entre seu programa e o mundo externo. Seja você interagindo com um arquivo, um soquete de rede ou o terminal do usuário, o Ruby os trata como fluxos genéricos.
1. O Ponto de Ligação Bidirecional
Um IO objeto é uma abstração unificada. Enquanto o sistema operacional vê descritores de arquivo para leitura e escrita (como em um tubo), o Ruby os encapsula em um único objeto. Isso permite uma transmissão de dados fluida em ambas as direções.
2. Kernel e Filtros Padrão
O Kernel módulo fornece métodos como gets e print. Esses são essencialmente filtros que delegam para as constantes globais STDIN e STDOUT. Isso significa que seu código pode ser redirecionado no nível do sistema operacional para processar arquivos ou fluxos de rede sem alterar uma única linha de lógica.
$$\text{Fluxo} \rightarrow \text{Buffer} \rightarrow \text{Interpretador Ruby}$$